12月8日 JTAGとSWD 您所在的位置:网站首页 JTAG JLINK SWD 12月8日 JTAGとSWD

12月8日 JTAGとSWD

2023-07-17 20:46| 来源: 网络整理| 查看: 265

12月8日 JTAGとSWD SWDって何?

JTAGは4本の線でICの内部回路と通信を行う汎用的なインタフェースです。内部回路と通信を行えるということは、CPUのデバッグにも使えるので、組み込みマイコンのデバッグ用インタフェースとして広がりを見せました。

しかし、信号線が4本必要になるということは小さなマイコンでは大きな問題となります。

32ピンや20ピン、8ピンくらいのマイコンにとっては4本ものI/Oがデバッグ用に使われてしまうということは大きなデメリットになります。

そこで、組み込みCPUの大手メーカーであるARM社は、Cortex用にSWD(Serial Wire Debug)という独自規格を定めました。

写真1 SWDの実例

IEEEも、一応、2本線でアクセスできるようにしたIEEE1149.7(Compact JTAG)という標準規格が定めました。IEEE1149.7とSWDは全く別物です。

SWDはよく使われているのに、cJTAGはほとんど使われていません。cJTAGのことは忘れてもいいくらいです。JTAG関連の規格では.1以外は驚くほど使われていないのです。

一方、ルネサスはFINEという1本線のデバッグプロトコルを策定しました。

SWDではバウンダリスキャンなどのJTAG本来の動作はできず、Cortexの中のデバッグ回路のレジスタに対して「32bitの値を書く」「32bitの値を読む」ということだけに特化した、独自のプロトコルになっています。

SWDの信号線

SWDでは、TDIとTDOが削除され、TMSがTDIとTDOを兼ねたような双方向の信号になります。

表1 JTAGとSWDの信号線

JTAGの信号 SWDの信号 説明 TCK SWCLK クロックです TMS SWDIO TDIとTDOを兼ねたような双方向の信号になっています。 TDI なし SWDでは削除されました TDO なし SWDでは削除されました TRST なし  

 

コネクタは1mmピッチの小さなピンヘッダが使われ、ピン配置は図1のようになっています。

図1 SWDのピン配置

 

SWDでは、TMSとTDIとTDOを時分割多重化してSWDIOという信号にして送ります。クロック信号はSWCLKと呼ぶようになります。

JTAGからSWDへの切り替え

SWD/JTAG兼用のポートは電源投入直後はJTAGモードになっていて、SWDIOはTMSとして使われます。ここで、SWDIO(TMS)に特別なシーケンスを与えて、JTAGのTAPステートマシンを「ふつうはありえないような無意味な動かし方」をさせることで、SWDからJTAGに切り替えたり、逆にJTAGからSWDに切り替えたりするコマンド代わりに使っています。

具体的に言うと、

 ① SWDIO(TMS)をHに保ったまま、50回以上のTCKパルスを与える

 ② SWDIO(TMS)に、0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1というシーケンスを与える

 ③ SWDIO(TMS)をHに保ったまま、50回以上のTCKパルスを与える

図2 SWDの書き込み波形

 

このシーケンスを実行したとき、①でJTAGのTAPコントローラはRESETステートに入ります。

②のシーケンスではJTAGのステートマシンはRuntest/Idle→Select-DR-Scan→Select-IR-Scan→Test-Locig-Reset→Runtest/Idleをぐるぐる回るだけなので、結局のところ従来のJTAGデバイスに対して実行しても害はありません。

JTAG/SWD兼用のポートはこのシーケンスによってSWDに切り替わります。

SWDはどんなプロトコルなのか

IEEE1149.7(cJTAG)では1ビットごとにTDI,TMS,TDOの3ビットをマルチプレクスして送るのですが、SWDではパケットベースのプロトコルになっていて、切り替えの回数が減っています。

SWD書き込み

具体的には、ホストからターゲットに書き込むときには図3に示す波形となっています。

まず、ホストが8ビットのヘッダのようなものを送り、ターゲットからACKが返ってきたら、32bitのデータを送るというパケットになっています。APnDPのビットは、0ならばデバッグポートを操作し、1ならばアクセスポートを操作します。

 

図3 SWDの書き込み波形

SWD読み出し

ターゲットから読み出すときには図4に示す波形でやりとりします。もはやJTAGとは何の関係もないことがわかると思います。

図4 SWDの読み出し波形

デバッグポート・アクセスポート

デバッグポートとアクセスポートというのは、Cortexの中にあるデバッグインタフェースです。つまり、SWDはJTAGのIRやDRというアクセスはせず、ARMのデバッグ専用のプロトコルとなっています。

SWDのバージョン

SWDのプロトコルにはバージョン1とバージョン2があります。バージョン1では、デバッグアダプタとターゲットは1対1で接続しなければなりませんが、バージョン2では複数のターゲットをスター配線できるようになりました。このような接続をマルチドロップといいます。

図5 SWDバージョン1。1対1通信しかできない

 

図6 SWDバージョン2。複数のターゲットを接続できる

 

で、結局SWDって何なの?

SWDは、ARM社が定めたJTAGと共存可能な2線式のデバッグインタフェースです。JTAGとの互換性はなく、端子を共有しているだけにすぎません。特別なパターンをTMSに送ることでJTAGからSWDに切り替わります。

SWDのプロトコルは、ADI(ARM Debug Interface)v5とCoreSight用に特化されていて、ICの中に作られたデバッグポートやアクセスポートを通じて、レジスタに32bitの値を書き込んだり読み出したりする目的に特化されています。

デバッグ用のレジスタの機能はCoreSightの規格で定められていて、SWDはその物理層を担っているにすぎません。

 

12月7日[上のページ]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有